package documents;

import java.util.Date;
import java.util.List;

import domain.Oferta;
import domain.Publicacion;
import domain.Subasta;
import domain.Usuario;
import domain.VentaDirecta;

@SuppressWarnings("unused")
public class DocPublicacion {
	private String _id;
	private String _rev;
	private String nombre;
	private String descripcion;
	private Usuario usuario;
	private Integer precio;
	private Usuario comprador;
	private Date fechaFin;
	private List<Oferta> ofertas;
	private boolean isSubasta;
	
	public boolean isSubasta() {
		return isSubasta;
	}

	public DocPublicacion(Publicacion p) {
		if(p.getType().equals("SUBASTA")) {
			initializeSubasta((Subasta)p);
		} else {
			initializeVenta((VentaDirecta)p);
		}
		
		this._id = this.generateId();
	}
	
	private void initializeVenta(VentaDirecta p) {
		this.nombre = p.getNombre();
		this.descripcion = p.getDescripcion();
		this.usuario = p.getUsuario();
		this.precio = p.getPrecio();
		this.comprador = p.getComprador();
		this.isSubasta = false;
	}
	
	private void initializeSubasta(Subasta p) {
		this.nombre = p.getNombre();
		this.descripcion = p.getDescripcion();
		this.usuario = p.getUsuario();
		this.precio = p.getPrecioMin();
		this.fechaFin = p.getFechaFin();
		this.ofertas = p.getOfertas();
		this.isSubasta = true;
	}
	
	public String generateId() {
		return usuario.getUsername()+"_"+this.getNombre();
	}

	public void update(Publicacion p) {
		if(p.getType().equals("SUBASTA")) {
			initializeSubasta((Subasta)p);
		} else {
			initializeVenta((VentaDirecta)p);
		}
	}

	public String getNombre() {
		return this.nombre;
	}
	
	public String getId() {
		return this._id;
	}

	public Usuario getComprador() {
		return comprador;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public Integer getPrecio() {
		return precio;
	}

	public Date getFechaFin() {
		return fechaFin;
	}

	public List<Oferta> getOfertas() {
		return ofertas;
	}
}
